<?php

class Conversacion {
    private $usuario;
    private $interlocutor;
    private $mensajes;

    public function __construct($usuario = Null, $interlocutor = Null) {
    //    $this->usuario = usuario::getFromId($usuario);
    //    $this->interlocutor = usuario::getFromId($interlocutor);
    }


    public static function getConversaciones($usuario_id) {
        $added = Array();
        $response = Array();
        $j = 0;
        $result = DbQuery::create()
        ->query("select distinct remitente_id, destinatario_id from
(select id, remitente_id, destinatario_id from mensajes where
(remitente_id = ".$u->id." and borrado_remitente = 0) or
(destinatario_id = ".$u->id." and borrado_destinatario = 0)
order by id desc
) m;");
        // Obtenemos todos los mensajes del usuario.
        // Ahora los procesamos en conversaciones
        for ($i=0; $i < count($m); $i++) {
            $id=null;
            if ($m[$i]->destinatario_id != $usuario_id)
            {
                $id = $m[$i]->destinatario_id;
            } else {
                $id = $m[$i]->remitente_id;
            }
            if (!in_array($id, $added))
            {
               array_push($added, $id);
               $c = null;
               $c = new Conversacion($usuario_id, $id);
               array_push($response, $c);
            }
        }
        return $response;
    }

    public function getUsuario() { return $this->usuario; }
    public function getInterlocutor() { return $this->interlocutor; }
    public function getNumNuevos() {
        $mask = Array(
            "remitente_id" => $this->getInterlocutor()->getId(),
            "destinatario_id" => $this->getUsuario()->getId(),
            "borrado_destinatario" => "0",
            "leido" => "0"
        );
        $count = mensaje::getCount($mask, "and");


        return $count;
    }
    public function getNuevos() {
        if ($this->mensajes == null) {
        $this->mensajes = mensaje::getMask(Null, Null, 'Select * from mensajes where remitente_id = '.$this->getInterlocutor()->getId().' and destinatario_id = '.$this->getUsuario()->getId().' and borrado_destinatario = 0 and leido=0 order by id desc');
        }
        return $this->mensajes;
    }
    public function getMensajes()
    {
        if ($this->mensajes == null) {
        $this->mensajes = mensaje::getMask(Null, Null, 'Select * from mensajes where (remitente_id = '.$this->getUsuario()->getId().' and destinatario_id = '.$this->getInterlocutor()->getId().' and borrado_remitente = 0)
            or (remitente_id = '.$this->getInterlocutor()->getId().' and destinatario_id = '.$this->getUsuario()->getId().' and borrado_destinatario = 0) order by id desc');
        }
        return $this->mensajes;

    }
}
?>
